// 导入 db/index.js文件
const db = require("../db/index");
const bcrypt = require("bcryptjs");

// 获取用户信息
module.exports.userInfo = (req, res) => {
  // 定义sql语句
  const sqlStr = "select username, id ,nickname,email from ev_users where id = ?";
  // 执行sql
  db.query(sqlStr, req.user.id, (err, data) => {
    if (err) return res.cc(err);
    if (data.length !== 1) res.cc("获取用户信息失败！");
    // 将用户的信息响应给客户端
    res.send({
      data: data[0],
      status: 0,
      message: "获取用户信息成功"
    });
  });
};

// 更新用户的信息
module.exports.updateUser = (req, res) => {
  // 定义sql语句
  const sqlStr = "update ev_users set ? where id = ?";
  // 执行sql语句
  db.query(sqlStr, [req.body, req.body.id], (err, results) => {
    // 执行 SQL 语句失败
    if (err) return res.cc(err);

    // 执行 SQL 语句成功，但影响行数不为 1
    if (results.affectedRows !== 1) return res.cc("修改用户基本信息失败！");

    // 修改用户信息成功
    return res.cc("修改用户基本信息成功！", 0);
  });
};

// 更新用户的密码
module.exports.updatePwd = (req, res) => {
  // 1. 需要查询是否存在该用户
  const selectSql = "select * from ev_users where id = ?";
  db.query(selectSql, req.user.id, (err, data) => {
    if (err) return res.cc(err);
    // 判断是否查询该用户
    if (data.length !== 1) return res.cc("用户不存在");
    // 用户存在 判断旧密码是否输入的是正确的
    const flag = bcrypt.compareSync(req.body.oldPwd, data[0].password);
    if (!flag) return res.cc("旧密码输入错误");
    // 需要更新数据表中密码 对新密码进行加密
    req.body.newPwd = bcrypt.hashSync(req.body.newPwd, 10);
    // 构建更新的sql语句
    const updateSql = "update ev_users set password = ? where id = ?";
    // 执行 sql
    db.query(updateSql, [req.body.newPwd, req.user.id], (err, data) => {
      if (err) return res.cc(err);
      if (data.affectedRows !== 1) return res.cc("密码更新失败");
      res.cc("密码更新成功", 0);
    });
  });
};

// 更新用户头像
module.exports.updateAvatar = (req, res) => {
  // 构建sql
  const updateSql = "update ev_users set user_pic = ? where id = ?";
  // 执行sql
  db.query(updateSql, [req.body.avatar, req.user.id], (err, data) => {
    // 表示sql语句有语法错误
    if (err) return res.cc(err);
    // 是否更新成功
    if (data.affectedRows !== 1) return res.cc("用户头像更新失败");
    res.cc("用户头像更新成功", 0);
  });
};
